Public Class NTutores
 
    Public Function cargarNuevoTutorVinculo(ByVal Alumno As Entidades.EAlumno) As Boolean
        Dim oDatosAlumnos As New Datos.DAlumnos()

        Dim band As Boolean
        Try

            'consultamos si el tutor existe por nro de dni. Si el tutor no existe lo carga
            Dim oDatosTutor As New Datos.DTutores()
            Dim listatut As New List(Of Entidades.ETutor)
            For Each oTut As Entidades.ETutor In Alumno.ListaTutores
                If Not (oDatosTutor.existeTutorxDni(oTut)) Then
                    listatut.Add(oTut)
                End If
            Next

            'busca si el vinculo existe, si no lo carga
            Dim oDatoVinculo As New Datos.DVinculo()
            Dim listaVin As New List(Of Entidades.EVinculo)
            Dim listaVinACargar As New List(Of Entidades.EVinculo)
            For Each oVin As Entidades.EVinculo In Alumno.ListaVinculos
                listaVin = oDatoVinculo.buscarVinculos(oVin)
                If listaVin.Count = 0 Then
                    listaVinACargar.Add(oVin)
                End If
            Next

            Alumno.ListaTutores = listatut
            Alumno.ListaVinculos = listaVinACargar

            'cargamos el tutor
            oDatosAlumnos.ModificarTutorVinculo(Alumno)
            band = True
        Catch ex As Exception
            band = False
            Throw New ArgumentException(ex.Message)
        End Try
        Return band
    End Function


    Public Function modificarTutor(ByVal tutor As Entidades.ETutor) As Boolean
        Dim oDatos As New Datos.DTutores()
        Dim band As Boolean = False
        Try
            oDatos.modificarTutor(tutor)
            band = True
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        Return band
    End Function

    Public Function borrarTutor(ByVal tutor As Entidades.ETutor) As Boolean
        Dim oDatos As New Datos.DTutores()
        Dim band As Boolean = False
        Try
            oDatos.borrarTutor(tutor)
            band = True
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        Return band
    End Function

    Public Function buscarTutorPorApellido(ByVal tutor As Entidades.ETutor, ByVal condicion As Boolean) As List(Of Entidades.ETutor)
        Dim oDatos As New Datos.DTutores()
        Dim oTutorNeg As New List(Of Entidades.ETutor)
        Try
            oTutorNeg = oDatos.buscarTutores(tutor.apellido, condicion)
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oDatos = Nothing
        End Try
        Return oTutorNeg
    End Function

    Public Function buscarTutorPorCodigo(ByVal codigo As Integer) As Entidades.ETutor
        Dim oDatos As New Datos.DTutores()
        Dim oTutor As New Entidades.ETutor
        Try
            oTutor = oDatos.buscarTutores(codigo)
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oDatos = Nothing
        End Try
        Return oTutor
    End Function

    'SOBRECARGADO: Devuelve una lista de tutores de acuerdo a la condicion (activo o inactivo)
    Public Function buscarTutores(ByVal cond As Boolean) As List(Of Entidades.ETutor)
        Dim oDatos As New Datos.DTutores()
        Try
            Return oDatos.buscarTutores(cond)
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oDatos = Nothing
        End Try
    End Function

    'SOBRECARGADO: Devuelve una lista de todos tutores, tanto activos como inactivos
    Public Function buscarTutores() As List(Of Entidades.ETutor)
        Dim oDatos As New Datos.DTutores()
        Try
            Return oDatos.buscarTutores()
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oDatos = Nothing
        End Try
    End Function

    Public Function buscarCantidadTutores() As Integer
        'utiliza la capa de datos

        Dim oDatos As New Datos.DTutores()
        Try
            Return oDatos.buscarCantidadTutores()
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oDatos = Nothing
        End Try

    End Function
End Class
